﻿//========================================================
//
//  DESCRIPTION:  Cls_NHOM_NGUOIDUNG.cs
//
//  CREATED:	Huypvt, 07/02/2006
//
//  USED FOR:	Quản lý người dùng. 
//
//=================================================

using System;
using System.Data;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;

namespace QLNHK.BLL
{
    //Name: Cls_DS_NGUOIDUNG	Base class:	Cls_NGUOIDUNG
    //Author: 	Huypvt		Date: 07/02/2006
    //Modifier:	Hungtq		Date: 08/02/2006
    //Thay đổi gì ?
    //Các Method cần thiết : 
    //		- ListByAll() 
    //			Mô tả : Trả về danh sách tất các các người dùng trong hệ thống.
    //			Return: DataSet.
    //		- ListByID(int intID) : Trả về thông tin người dùng theo ID.
    //			Return: Object NguoiDung.
    //		- ListNhomNguoiDungByIDNguoiDung(int intIDNguoiDung)
    //			Mô tả : Trả về danh sách các nhóm mà người dùng đó thuộc.
    //			Return: Dataset.
    //		- RemoveNguoiDungFromNhomNguoiDung(int intIDNguoiDung, int intIDNhomNguoiDung)
    //			Mô tả : Xóa một người dùng khỏi nhóm.
    //			Parameter : 
    //				+ intIDNguoiDung : ID người dùng muốn xóa khỏi nhóm.
    //				+ intNhomNguoiDung : ID nhóm người dùng muốn tương tác.
    //			Return : int (Nếu gặp lỗi return -1). 
    //		- CheckNguoiDungContainsNhomNguoiDung(int intIDNguoiDung, int intIDNhomNguoiDung)
    //			Mô tả : Kiểm tra người dùng có tồn tại trong nhóm không ?.
    //			Return: Bollean (nếu không tồn tại trả về false).
    //		- GetAuthenticationByIDNguoiDung(int intIDNguoiDung, int intIDDanhSachChucNang)
    //			Mô tả : Lấy tất cả các quyền của người dùng đó theo chức năng.
    //			Return: string (Mã truy cập vd:11111 toàn quyền)
    //		- DoLogin(string strTenNguoiDung, string strMatKhau)
    //			Mô tả : Kiểm tra đăng nhập. Yêu cầu mật khẩu mã hóa MD5.
    //			Return: Bollean (Nếu đăng nhập không thành công trả về false)
    //		- DoInsert(int intIDHoSoNhanSu, string strTenNguoiDung, string strMatKhau, DateTime dateNgayTao, bool blTinhTrang)
    //			Mô tả : Insert một người dùng vào cơ sở dữ liệu.
    //			Return: int (Nếu gặp lỗi return -1, ngược lại return ID của người dùng mới Insert).
    //		- DoUpdate(int intIDNguoiDung, int intIDHoSoNhanSu, string strTenNguoiDung, string strMatKhau, DateTime dateNgayTao, bool blTinhTrang)
    //			Mô tả : Cập nhật thông tin của người dùng vào cơ sở dữ liệu.
    //			Return: int (Nếu gặp lỗi return -1).
    //		- DoDelete(int intIDNguoiDung)
    //			Mô tả : Xóa thông tin của người dùng.
    //			Return: int (Nếu gặp lỗi return -1).
    /// <summary>
    /// Quản lý người dùng.
    /// </summary>
    public class Cls_NGUOIDUNG
    {
        #region Variable Members
        private const string ST_NGUOIDUNG_INSERT = "st_NGUOIDUNGInsert"; // Lưu tên StoreProcedure
        private const string ST_QUYENCHAMCONG_SELECTALL = "st_PhanQuyen_ChamCongSelectAll";
        private const string ST_QUYENCHAMCONG_UPDATE = "st_PhanQuyen_ChamCongUpdate";
        private const string ST_NGUOIDUNG_UPDATE = "st_NGUOIDUNGUpdate"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_UPDATESUA = "st_NGUOIDUNGUpdateSua"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_DELETE = "st_NGUOIDUNGDelete"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_SELECT = "st_NGUOIDUNGSelect"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_SELECTALL = "st_NGUOIDUNGSelectAll"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_SELECT_AUTHENTICATION_BY_ID_NGUOIDUNG = "st_NGUOIDUNGSelectAuthenticationByIDNguoiDung"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_SELECT_BY_ID = "st_NGUOIDUNGSelect"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_SELECT_NHOM_NGUOIDUNG_BY_ID = "st_NGUOIDUNGSelectNhomNguoiDungByID"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_DELETE_FROM_NHOM_NGUOIDUNG = "st_NGUOIDUNGDeleteFromNhomNguoiDung"; // Lưu tên StoreProcedure
        private const string ST_NGUOIDUNG_CHECKLOGIN = "st_NGUOIDUNG_CheckLogin"; // Lưu tên StoreProcedure
        private const string TABLE_NAME = "tb_NGUOIDUNG"; // L]u tên của bảng dữ liệu
        private Database db;
        private int _iD_NguoiDung;
        private int _iD_HoSo_NhanSu;
        private string _HoTen_NguoiDung;
        private string _ten_NguoiDung;
        private string _matKhau;
        private DateTime _ngayTao;
        private bool _tinhTrang;
        private bool _IsAdministrator;
        #endregion //Variable Members

        #region Properties
        public int ID_NguoiDung
        {
            get { return this._iD_NguoiDung; }
            set { this._iD_NguoiDung = value; }
        }
        public int ID_HoSo_NhanSu
        {
            get { return this._iD_HoSo_NhanSu; }
            set { this._iD_HoSo_NhanSu = value; }
        }
        public string HoTen_NguoiDung
        {
            get
            {
                //Cls_HOSO_NHANSU ObjHoSoNhanSu = new Cls_HOSO_NHANSU();
                //return ObjHoSoNhanSu.ListByID_HoSoNhanSu(this._iD_HoSo_NhanSu).Ho_Lot + " " + ObjHoSoNhanSu.ListByID_HoSoNhanSu(this._iD_HoSo_NhanSu).Ten;
                return string.Empty;
            }
        }
        public string Ten_NguoiDung
        {
            get { return this._ten_NguoiDung; }
            set { this._ten_NguoiDung = value; }
        }
        public string MatKhau
        {
            get { return this._matKhau; }
            set { this._matKhau = value; }
        }
        public DateTime NgayTao
        {
            get { return this._ngayTao; }
            set { this._ngayTao = value; }
        }
        public bool TinhTrang
        {
            get { return this._tinhTrang; }
            set { this._tinhTrang = value; }
        }
        public bool IsAdministrator
        {
            get { return this._IsAdministrator; }
            set { this._IsAdministrator = value; }
        }
        #endregion //Properties

        #region Constructors
        public Cls_NGUOIDUNG()
        {
            try
            {
                db = DatabaseFactory.CreateDatabase();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public Cls_NGUOIDUNG(int intIDNguoiDung, int intIDHoSoNhanSu, string strTenNguoiDung, string strMatKhau, DateTime dtmNgayTao, bool blnTinhTrang, bool blnIsAdministrator)
        {
            this._iD_NguoiDung = intIDNguoiDung;
            this._iD_HoSo_NhanSu = intIDHoSoNhanSu;
            this._ten_NguoiDung = strTenNguoiDung;
            this._matKhau = strMatKhau;
            this._ngayTao = dtmNgayTao;
            this._tinhTrang = blnTinhTrang;
            this._IsAdministrator = blnIsAdministrator;
        }
        #endregion //Constructors

        #region Methods
        /// Author: khanhlq . Date: 2/8/2006.
        /// Modifier: khanhlq. Date:  2/8/2006.
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Inserts the wrapper.
        /// </summary>
        /// <returns>dbCommand</returns>
        private DbCommand InsertWrapper()
        {
            DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_INSERT);
            db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, "ID_NguoiDung", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@ID_HoSo_NhanSu", DbType.Int32, "ID_HoSo_NhanSu", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, "Ten_NguoiDung", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@MatKhau", DbType.String, "MatKhau", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@NgayTao", DbType.DateTime, "NgayTao", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@TinhTrang", DbType.Boolean, "TinhTrang", DataRowVersion.Current);
            return dbCommand;
        }
        /// Author: khanhlq . Date: 2/8/2006.
        /// Modifier: khanhlq. Date:  2/8/2006.
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Updates the wrapper.
        /// </summary>
        /// <returns>dbCommand</returns>
        private DbCommand UpdateWrapper()
        {
            DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_UPDATE);
            db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, "ID_NguoiDung", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@ID_HoSo_NhanSu", DbType.Int32, "ID_HoSo_NhanSu", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, "Ten_NguoiDung", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@MatKhau", DbType.String, "MatKhau", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@NgayTao", DbType.DateTime, "NgayTao", DataRowVersion.Current);
            db.AddInParameter(dbCommand, "@TinhTrang", DbType.Boolean, "TinhTrang", DataRowVersion.Current);
            return dbCommand;
        }
        /// Author: khanhlq . Date: 2/8/2006.
        /// Modifier: khanhlq. Date:  2/8/2006.
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Deletes the wrapper.
        /// </summary>
        /// <returns>dbCommand</returns>
        private DbCommand DeleteWrapper()
        {
            DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_DELETE);
            return dbCommand;
        }
        /// Author: khanhlq . Date: 2/8/2006.
        /// Modifier: khanhlq. Date:  2/8/2006.
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Does the update.
        /// </summary>
        /// <param name="ds">DataSet đã thay đổi</param>
        /// <returns>int</returns>
        public int DoUpdate(DataSet ds)
        {
            try
            {
                int result = db.UpdateDataSet(ds.GetChanges(), Cls_NGUOIDUNG.TABLE_NAME, this.InsertWrapper(), this.UpdateWrapper(), this.DeleteWrapper(), UpdateBehavior.Standard);
                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// Author: khanhlq . Date: 2/8/2006.
        /// Modifier: khanhlq. Date:  2/8/2006.
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Trả về danh sách tất các các người dùng trong hệ thống.
        /// </summary>
        /// <returns>DataSet</returns>
        public DataSet ListByAll()
        {
            try
            {
                DataSet dsNguoiDung = new DataSet();
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_SELECTALL);
                db.LoadDataSet(dbCommand, dsNguoiDung, Cls_NGUOIDUNG.TABLE_NAME);
                return dsNguoiDung;
            }
            catch
            {
                return null;
            }

        }
        /// Author: Hungtq	Date: 08/02/2006.
        /// Modifier:		Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Trả về thông tin người dùng theo ID.
        /// </summary>
        /// <param name="intIDNguoiDung">Mã người dùng</param>
        /// <returns>DataSet</returns>
        public DataSet ListByID(int intIDNguoiDung)
        {
            try
            {
                DataSet dsNguoiDung = new DataSet();
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_SELECT);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.LoadDataSet(dbCommand, dsNguoiDung, Cls_NGUOIDUNG.TABLE_NAME);
                return dsNguoiDung;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        public DataSet ListQuyenChamCongAllNguoiDung()
        {
            try
            {
                DataSet dsNguoiDung = new DataSet();
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_QUYENCHAMCONG_SELECTALL);
                db.LoadDataSet(dbCommand, dsNguoiDung, Cls_NGUOIDUNG.TABLE_NAME);
                return dsNguoiDung;
            }
            catch
            {
                return null;
            }

        }
        /// Author: Hungtq . Date: 08/02/2006.
        /// Modifier:  Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Trả về danh sách các nhóm mà người dùng đó thuộc.
        /// </summary>
        /// <param name="intIDNguoiDung">Mã người dùng</param>
        /// <returns>DataSet</returns>
        public DataSet ListNhomNguoiDungByIDNguoiDung(int intIDNguoiDung)
        {
            try
            {
                DataSet dsNguoiDung = new DataSet();
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_SELECT_NHOM_NGUOIDUNG_BY_ID);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.LoadDataSet(dbCommand, dsNguoiDung, Cls_NGUOIDUNG.TABLE_NAME);
                return dsNguoiDung;
            }
            catch
            {
                return null;
            }

        }
        /// Author: Hungtq . Date: 08/02/2006.
        /// Modifier:  Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Xóa một người dùng khỏi nhóm
        /// </summary>
        /// <param name="intIDNguoiDung">ID người dùng muốn xóa khỏi nhóm.</param>
        /// <param name="intIDNhomNguoiDung">ID nhóm người dùng muốn tương tác.</param>
        /// <returns>int</returns>
        public int RemoveNguoiDungFromNhomNguoiDung(int intIDNguoiDung, int intIDNhomNguoiDung)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_DELETE_FROM_NHOM_NGUOIDUNG);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ID_Nhom_NguoiDung", DbType.Int32, intIDNhomNguoiDung);
                return Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch
            {
                return -1;
            }

        }

        /// Author: Hungtq . Date: 08/02/2006.
        /// Modifier:  Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Kiểm tra người dùng có tồn tại trong nhóm không ?.
        /// </summary>
        /// <param name="intIDNguoiDung">ID người dùng muốn xóa khỏi nhóm.</param>
        /// <param name="intIDNhomNguoiDung">ID nhóm người dùng muốn tương tác.</param>
        /// <returns>Boolean</returns>
        public bool CheckNguoiDungContainsNhomNguoiDung(int intIDNguoiDung, int intIDNhomNguoiDung)
        {
            int isValid = -1;
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_DELETE_FROM_NHOM_NGUOIDUNG);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ID_Nhom_NguoiDung", DbType.Int32, intIDNhomNguoiDung);
                isValid = Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return isValid != -1 ? true : false;
        }

        /// Author: Hungtq . Date: 08/02/2006.
        /// Modifier:		 Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Lấy tất cả các quyền của người dùng đó theo chức năng.
        /// </summary>
        /// <param name="intIDNguoiDung">ID người dùng.</param>
        /// <param name="intIDDanhSachChucNang">ID chức năng.</param>
        /// <returns>String</returns>
        public String GetAuthenticationByIDNguoiDung(int intIDNguoiDung, int intIDDanhSachChucNang)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_DELETE_FROM_NHOM_NGUOIDUNG);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ID_DS_ChucNang", DbType.Int32, intIDDanhSachChucNang);

                return Convert.ToString(db.ExecuteScalar(dbCommand));
            }
            catch
            {
                return null;
            }
        }

        /// Author: Hungtq . Date: 08/02/2006.
        /// Modifier:		 Date:  
        /// Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Kiểm tra đăng nhập. Yêu cầu mật khẩu mã hóa MD5.
        /// </summary>
        /// <param name="strTenNguoiDung">Tên người dùng</param>
        /// <param name="strMatKhau">Mật khẩu</param>
        /// <returns>Boolean</returns>
        public Cls_NGUOIDUNG DoLogin(string strTenNguoiDung, string strMatKhau)
        {
            try
            {
                Cls_NGUOIDUNG ObjNguoiDung = new Cls_NGUOIDUNG();
                DataSet ds = new DataSet();
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_CHECKLOGIN);
                db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, strTenNguoiDung);
                db.AddInParameter(dbCommand, "@MatKhau", DbType.String, strMatKhau);
                db.LoadDataSet(dbCommand, ds, Cls_NGUOIDUNG.TABLE_NAME);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    ObjNguoiDung.ID_HoSo_NhanSu = Convert.ToInt32(ds.Tables[0].Rows[0]["ID_HoSo_NhanSu"]);
                    ObjNguoiDung.ID_NguoiDung = Convert.ToInt32(ds.Tables[0].Rows[0]["ID_NguoiDung"]);
                    ObjNguoiDung.Ten_NguoiDung = ds.Tables[0].Rows[0]["Ten_NguoiDung"].ToString();
                    ObjNguoiDung.MatKhau = ds.Tables[0].Rows[0]["MatKhau"].ToString();
                    ObjNguoiDung.NgayTao = Convert.ToDateTime(ds.Tables[0].Rows[0]["NgayTao"]);
                    ObjNguoiDung.TinhTrang = Convert.ToBoolean(ds.Tables[0].Rows[0]["TinhTrang"]);
                    ObjNguoiDung.IsAdministrator = Convert.ToBoolean(ds.Tables[0].Rows[0]["IsAdministrator"]);
                    return ObjNguoiDung;
                }
                else
                {
                    return null;
                }
            }
            catch
            {
                return null;
            }
        }
        //Author: Hungtq	Date: 08/02/2006
        //Modifier:		Date:
        // Thay đổi gì	 ?
        /// <summary>
        /// Insert một người dùng vào cơ sở dữ liệu.
        /// </summary>
        /// <param name="intIDHoSoNhanSu">Mã ID hồ sơ nhân sự</param>
        /// <param name="strTenNguoiDung">Ten người dùng</param>
        /// <param name="strMatKhau">Mật khẩu</param>
        /// <param name="dateNgayTao">Ngày tạo mới người dùng</param>
        /// <param name="blTinhTrang">Tình trạng</param>
        /// <returns>int</returns>
        public int DoInsert(int intIDHoSoNhanSu, string strTenNguoiDung, string strMatKhau, DateTime dateNgayTao, bool blTinhTrang, bool _IsAdministrator)
        {
            try
            {
                int id_NguoiDungTam = 0;
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_INSERT);
                db.AddInParameter(dbCommand, "@ID_HoSo_NhanSu", DbType.Int32, intIDHoSoNhanSu);
                db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, strTenNguoiDung);
                db.AddInParameter(dbCommand, "@MatKhau", DbType.String, strMatKhau);
                db.AddInParameter(dbCommand, "@NgayTao", DbType.DateTime, dateNgayTao);
                db.AddInParameter(dbCommand, "@TinhTrang", DbType.Boolean, blTinhTrang);
                db.AddInParameter(dbCommand, "@IsAdministrator", DbType.Boolean, _IsAdministrator);
                db.AddOutParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, id_NguoiDungTam);
                db.ExecuteNonQuery(dbCommand);
                id_NguoiDungTam = Convert.ToInt32(db.GetParameterValue(dbCommand, "@ID_NguoiDung"));
                return id_NguoiDungTam;
            }
            catch
            {
                return -1;
            }
        }
        //Author: Hungtq	Date: 08/02/2006
        //Modifier:		Date:
        // Thay đổi gì	 ?
        /// <summary>
        /// Cập nhật thông tin của người dùng vào cơ sở dữ liệu.
        /// </summary>
        /// <param name="intIDNguoiDung">Mã người dùng</param>
        /// <param name="intIDHoSoNhanSu">Mã ID hồ sơ nhân sự</param>
        /// <param name="strTenNguoiDung">Ten người dùng</param>
        /// <param name="strMatKhau">Mật khẩu</param>
        /// <param name="dateNgayTao">Ngày tạo mới người dùng</param>
        /// <param name="blTinhTrang">Tình trạng</param>
        /// <returns>int</returns>
        public int DoUpdate(int intIDNguoiDung, int intIDHoSoNhanSu, string strTenNguoiDung, string strMatKhau, DateTime dateNgayTao, bool blTinhTrang)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_UPDATE);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ID_HoSo_NhanSu", DbType.Int32, intIDHoSoNhanSu);
                db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, strTenNguoiDung);
                db.AddInParameter(dbCommand, "@MatKhau", DbType.String, strMatKhau);
                db.AddInParameter(dbCommand, "@NgayTao", DbType.DateTime, dateNgayTao);
                db.AddInParameter(dbCommand, "@TinhTrang", DbType.Boolean, blTinhTrang);

                return Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch
            {
                return -1;
            }
        }
        public int DoUpdate(int intIDNguoiDung, int intIDHoSoNhanSu, string strTenNguoiDung, DateTime dateNgayTao, bool blTinhTrang)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_UPDATESUA);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ID_HoSo_NhanSu", DbType.Int32, intIDHoSoNhanSu);
                db.AddInParameter(dbCommand, "@Ten_NguoiDung", DbType.String, strTenNguoiDung);
                db.AddInParameter(dbCommand, "@NgayTao", DbType.DateTime, dateNgayTao);
                db.AddInParameter(dbCommand, "@TinhTrang", DbType.Boolean, blTinhTrang);

                return Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch (Exception ex)
            {
                Logger.LocalLogger.Instance().WriteMessage("Class: Cls_NguoiDung : " + ex.Message, ex);
                return -1;
            }
        }
        //Author: Hungtq	Date: 08/02/2006
        //Modifier:		Date:
        // Thay đổi gì	 ?
        /// <summary>
        /// Xóa thông tin của người dùng.
        /// </summary>
        /// <param name="intIDNguoiDung">Mã người dùng</param>
        /// <returns>int</returns>
        public int DoDelete(int intIDNguoiDung)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_NGUOIDUNG_DELETE);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);

                return Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch
            {
                return -1;
            }
        }
        public int QuyenChamCong_Update(int intIDNguoiDung, string ChamCongPhongBan)
        {
            try
            {
                DbCommand dbCommand = db.GetStoredProcCommand(Cls_NGUOIDUNG.ST_QUYENCHAMCONG_UPDATE);
                db.AddInParameter(dbCommand, "@ID_NguoiDung", DbType.Int32, intIDNguoiDung);
                db.AddInParameter(dbCommand, "@ChamCongPhongBan", DbType.String, ChamCongPhongBan);
                return Convert.ToInt32(db.ExecuteScalar(dbCommand));
            }
            catch (Exception ex)
            {
                Logger.LocalLogger.Instance().WriteMessage("Class: Cls_NguoiDung : " + ex.Message, ex);
                return -1;
            }
        }

        #endregion //Methods
    }

}
